package db

import (
	"errors"
	"project1/dbmodel"
	"project1/util"
	"time"
)

// 检查数据库初始数据是否完整
func CheckSqlInitData() (uint, error) {
	// 检查超级管理员账号是否存在
	var count int64
	GormDB.Table("user").Where("role_id = ?", dbmodel.RoleSuperAdmin).Count(&count)
	if count == 0 {
		return 1, errors.New("超级管理员账号不存在")
	}

	// 检查管理员账号是否存在
	count = 0
	GormDB.Table("user").Where("role_id = ?", dbmodel.RoleAdmin).Count(&count)
	if count == 0 {
		return 2, errors.New("管理员账号不存在")
	}

	return 0, nil
}

// 组织创建用户结构体方法,头像 账号 密码 注册ip 最后登录ip 角色id 卡密id 邀请人id 操作人id
func CreateUserP1(AvatarUrl, UserName, Password, RegisterIp, LastLoginIp string, RoleId, CardId, InviteId, operatorId uint) (dbmodel.User, error) {
	newTime := time.Now()
	user := dbmodel.User{}
	if AvatarUrl == "" {
		user.AvatarUrl = "https://i2.hdslb.com/bfs/face/d5f95ffb2f769ebaf77d02be3a77b5fe9e26c841.jpg" // 头像
	} else {
		user.AvatarUrl = AvatarUrl
	}
	user.Status = 1      // 状态1正常2拉黑3冻结
	user.RoleId = RoleId // 角色ID 1-超级管理员 2-管理员 3-前台用户
	if RoleId == 1 {
		user.UserName = "superAdmin" // 超级管理员用户昵称
		user.Password = "123456"     // 用户密码
		user.CardId = 0              // 卡密id

	} else if RoleId == 2 {
		user.UserName = UserName // 管理员用户昵称
		user.Password = Password // 用户密码
		user.CardId = 0          // 卡密id
		user.ControlBy = dbmodel.ControlBy{
			CreatedBy: 1,
			UpdatedBy: 1,
		}

	} else if RoleId == 3 {
		if UserName == "" || Password == "" {
			return user, errors.New("用户名或密码不能为空")
		}
		if CardId == 0 {
			return user, errors.New("卡密不能为空")
		}
		user.UserName = UserName // 管理员用户昵称
		user.Password = Password // 用户密码
		user.CardId = CardId     // 卡密id
	}
	user.InviteCode = util.GetRandomString(8)         // 邀请码
	user.InviteId = InviteId                          // 邀请人id
	user.OnlineStatus = 0                             // 在线状态 0离线 1在线
	user.LoginDays = 1                                // 登录天数
	user.LastLoginTime = newTime.Format("2006-01-02") // 最后登录时间
	user.RegisterIp = RegisterIp                      // 注册ip
	user.LastLoginIp = LastLoginIp                    // 最后登录ip
	user.QrCodeUrl = ""                               // 收款二维码图片

	return user, nil
}
